package br.com.datasun.biblioteca.ui.controller;

import java.awt.event.MouseEvent;
import java.util.List;

import javax.swing.JOptionPane;

import br.com.datasun.biblioteca.delegate.CadastrosDelegate;
import br.com.datasun.biblioteca.delegate.ConsultasDelegate;
import br.com.datasun.biblioteca.entities.Assunto;
import br.com.datasun.biblioteca.entities.Categoria;
import br.com.datasun.biblioteca.entities.Editora;
import br.com.datasun.biblioteca.entities.Livro;
import br.com.datasun.biblioteca.exceptions.BusinessException;
import br.com.datasun.biblioteca.ui.ConsultaLivrosUI;

public class ConsultaLivrosController implements ICRUDController {

	
	private CadastrosDelegate cadastrosDelegate = new CadastrosDelegate();
	private ConsultasDelegate consultasDelegate = new ConsultasDelegate();
	private ConsultaLivrosUI ui;
	
	public ConsultaLivrosController(ConsultaLivrosUI ui){
		this.ui = ui;
	}	
	
	@Override
	public void btnSalvarEventHandler() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void btnFecharEventHandler() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void btnNovoEventHandler() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void btnLimparEventHandler() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void excluirEventHandler() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void selecionarParaEdicaoEventHandler(MouseEvent event) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void carregarDados() {
		// TODO Auto-generated method stub
		
		List<Livro> livros = null;
		try{
			livros = consultasDelegate.listarLivrosCom(ui.getISBN(), ui.getTitulo(), ui.getAutor(),ui.getEditora(),ui.getAssunto() , ui.getCategoria());
			ui.setLivros(livros);
			carregarTodasCategoria();
			carregarTodasEditoras();
			carregarTodosAssuntos();
			
			
		}catch (BusinessException e) {
			// TODO: handle exception
			e.printStackTrace();
			JOptionPane.showMessageDialog(ui,e.getMessage(), "..:: Erro ::..!", JOptionPane.ERROR_MESSAGE);
		}	
	}
	
	public void carregarLivrosCom(){
		List<Livro> livros = null;
		try{
			livros = consultasDelegate.listarLivrosCom(ui.getISBN(), ui.getTitulo(), ui.getAutor(),ui.getEditora(),ui.getAssunto() , ui.getCategoria());
			ui.setLivros(livros);
			
		}catch (BusinessException e) {
			// TODO: handle exception
			e.printStackTrace();
			JOptionPane.showMessageDialog(ui,e.getMessage(), "..:: Erro ::..!", JOptionPane.ERROR_MESSAGE);
		}
	}
	
	public void carregarTodasCategoria(){
		List<Categoria> categorias;
		try{
			categorias = consultasDelegate.listarTodasCategorias();
	    	ui.setCategoria(categorias);	
			ui.inicializarComboCategoria();
		}catch (BusinessException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
	
	public void carregarTodasEditoras(){
		List<Editora> editora;
		try{
			editora = consultasDelegate.listarTodasEditoras();
			ui.setEditora(editora);	
			ui.inicializarComboEditora();
		}catch (BusinessException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
	
	public void carregarTodosAssuntos(){
		List<Assunto> assuntos;
		try{
			assuntos = consultasDelegate.listarTodosAssuntos();
			ui.setAssunto(assuntos);	
			ui.inicializarComboAssunto();
		}catch (BusinessException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
	

}
